package com.coder520.sync_learning.demo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class Demo5 {
	private static volatile boolean notStart=true;
	private static volatile boolean notEnd=true;
	public static void main(String[] args) throws InterruptedException {
		List<Job> jobs=new ArrayList<Demo5.Job>();
		
		for (int i = 0; i <10; i++) {
			int priority =i<5 ?Thread.MIN_PRIORITY:Thread.MAX_PRIORITY;
			Job job=new Job(priority);
			jobs.add(job);
			Thread thread=new Thread(job,"Thread:"+i);
			thread.setPriority(priority);
			thread.start();
		}
		
		notStart=false;
		TimeUnit.SECONDS.sleep(10);
		notEnd=false;
		
		for (Job job : jobs) {
			System.out.println("Job Priority:"+job.priority+",Count:"+job.jobCount);
		}
	}
	
	static class Job implements Runnable{
		private int 	priority;
		private long jobCount;
		public Job(int priority) {
			// TODO Auto-generated constructor stub
			this.priority=priority;
		}
		@Override
		public void run() {
			// TODO Auto-generated method stub
			while(notStart) {
				Thread.yield();
			}
			
			while (notEnd) {
				Thread.yield();
				jobCount++;
			}
		}
		
	}
}
